package com.wd.attend.service;

import java.util.List;

import com.wd.attend.domain.StaffInfo;

/**
 * 员工信息Service接口
 *
 * @author liumingkun
 * @date 2023-11-08
 */
public interface IStaffInfoService {
    /**
     * 查询员工信息
     *
     * @param staffId 员工信息主键
     * @return 员工信息
     */
    StaffInfo selectStaffInfoByStaffId(Long staffId);

    /**
     * 查询员工信息列表
     *
     * @param staffInfo 员工信息
     * @return 员工信息集合
     */
    List<StaffInfo> selectStaffInfoList(StaffInfo staffInfo);


    /**
     * 查询已分配考勤分组的员工信息列表
     *
     * @param staffInfo 员工信息
     * @return 员工信息集合
     */
    List<StaffInfo> selectAllocatedGroupList(StaffInfo staffInfo);


    /**
     * 查询未分配考勤分组的员工信息列表
     *
     * @param staffInfo 员工信息
     * @return 员工信息集合
     */
    List<StaffInfo> selectUnAllocatedGroupList(StaffInfo staffInfo);


    /**
     * 移除员工的考勤班组信息
     *
     * @param staffInfo 员工信息
     * @return 结果
     */
    int staffGroupCancel(StaffInfo staffInfo);


    /**
     * 新增员工信息
     *
     * @param staffInfo 员工信息
     * @return 结果
     */
    int insertStaffInfo(StaffInfo staffInfo);

    /**
     * 修改员工信息
     *
     * @param staffInfo 员工信息
     * @return 结果
     */
    int updateStaffInfo(StaffInfo staffInfo);

    /**
     * 批量删除员工信息
     *
     * @param staffIds 需要删除的员工信息主键集合
     * @return 结果
     */
    int deleteStaffInfoByStaffIds(Long[] staffIds);

    /**
     * 删除员工信息信息
     *
     * @param staffId 员工信息主键
     * @return 结果
     */
    int deleteStaffInfoByStaffId(Long staffId);


    /**
     * 批量从班组中移除员工
     *
     * @param staffIds 员工信息主键
     * @return 结果
     */
    int cancelAllStaffGroup(Long[] staffIds);


    /**
     * 批量将员工添加到考勤组
     *
     * @param groupId 考勤分组Id
     * @param staffIds 员工信息主键
     * @return 结果
     */
    int authStaffSelectAll(Long groupId,Long[] staffIds);


}
